package com.mjk.manager.gen.dto;

import java.io.Serializable;
import java.util.List;
import com.mjk.common.base.model.BaseEntity;
import com.mjk.manager.api.model.ApiModel;
import com.mjk.manager.usercenter.model.ScGenConfModel;
import groovy.lang.GroovyClassLoader;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.data.annotation.Transient;

@EqualsAndHashCode(callSuper = true)
@Data
public class GenDto extends ScGenConfModel implements Serializable{
	
	public GenDto() {
		this.serverExit="0";
		this.viewExit="0";
		this.menuExit="0";
	}
	
	
	public GenDto (ApiModel model) {
		this.model = model;
	}
	
	public GenDto (ApiModel model, List<ApiModel> models) {
		this.model = model;
		this.models = models;
	}
	
	private ApiModel model;
	
	private List<ApiModel> models;
	
	private String reGenerate;//是否重新生成
	
	private String entityName;//实体类名称
	
	private String dbName;//数据库名称
	
	private String tabName;//表名称
	
	private BaseEntity entity;//baseentity实体类
	/**
	 * 后端服务是否已经存在
	 */
	private String serverExit;
	/**
	 * 界面是否已经存在
	 */
	private String viewExit;
	/**
	 * 菜单是否已经存在
	 */
	private String menuExit ;

	private transient GroovyClassLoader groovyClassLoader;//类编译器

	/**
	 * 用于接收保存的model类 通过前端配置生成model类，表结构和后续的增删改查
	 */
	@Data
	public static class ModelInfo {
		/**
		 * 数据源
		 */
		private String dataSource;
		/**
		 * 表明
		 */
		private String tableName;
		/**
		 * 用户名
		 */
		private String userName;
		/**
		 * 表字段属性
		 */
		private List<TabFiled> fileds;
	}

	/**
	 * 表结构的属性
	 */
	@Data
	public static class TabFiled {
		/**
		 * 字段名称
		 */
		private String filedName;
		/**
		 * 字段别名
		 */
		private String cloum;
		/**
		 * sql字段的注释
		 */
		private String comment;
		/**
		 * 字段类型
		 */
		private String javaType;
		/**
		 * 长度
		 */
		private int lenght;
	}
}
